home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / man / cat.1 / xconq_custom.1 < prev    next >
Text File  |  1995-07-25  |  73KB  |  1,717 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.           CCCCUUUUSSSSTTTTOOOOMMMMIIIIZZZZIIIINNNNGGGG XXXXCCCCOOOONNNNQQQQ ((((MMMMaaaaddddeeee SSSSoooommmmeeeewwwwhhhhaaaatttt SSSSiiiimmmmpppplllleeee))))
  11.  
  12.  
  13.                          Stan Shebs
  14.  
  15.                Department of Computer Science
  16.                      University of Utah
  17.  
  18.  
  19.                           _A_B_S_T_R_A_C_T
  20.  
  21.           For advanced players  who  desire  new  chal-
  22.      lenges,   _x_c_o_n_q   provides  several  customization
  23.      mechanisms.  It is possible  to  build  new  maps,
  24.      scenarios,  and historical periods.  This document
  25.      describes the customization process in  excruciat-
  26.      ing  detail.  The reader is assumed to be familiar
  27.      with _x_c_o_n_q and its basic documentation.
  28.  
  29.  
  30.  
  31. _I_N_T_R_O_D_U_C_T_I_O_N
  32.  
  33. _X_c_o_n_q has been designed to facilitate  the  construction  of
  34. new  maps,  scenarios,  and  historical  periods.  All these
  35. additions happen through a single  mechanism,  the  _m_a_p_f_i_l_e,
  36. which  comes  in several parts, and may also load other map-
  37. files.   Saved  games  are  very  detailed  mapfiles;   less
  38. detailed  mapfiles are more suitable as scenarios.  Maps and
  39. period descriptions are mapfiles with most sections missing.
  40.  
  41. Mapfiles are created either by text editing, by _x_c_o_n_q, or by
  42. a  combination of both. Since they are mostly read by varia-
  43. tions on C's _s_c_a_n_f function, the  format  is  rather  rigid;
  44. numbers  may not be omitted, no blank lines are allowed (but
  45. whitespace between numbers on a line is  OK),  and  mistakes
  46. will not always be recognized.  The one general exception is
  47. the period description, which is read by a lexical analyzer,
  48. which  allows free-format input.  Other more specific excep-
  49. tions will be noted below.
  50.  
  51. _M_A_P_F_I_L_E_S
  52.  
  53. A mapfile is a normal ASCII text file.   It  begins  with  a
  54. header line of the form
  55.  
  56.      XXXXccccoooonnnnqqqq _n [+-][+-][+-][+-][+-][+-] _d_e_s_c_r_i_p_t_i_o_n[;]
  57.  
  58. where _n is the number of additional mapfiles  to  be  loaded
  59. (up  to 16 or so in all), each + or - indicates the presence
  60. or absence of a particular section, and the  _d_e_s_c_r_i_p_t_i_o_n  is
  61.  
  62.  
  63.  
  64.                      September 10, 1993
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                            - 2 -
  71.  
  72.  
  73. free-form  text  (remainder of the line) describing the map-
  74. file.  Note that that all reading/writing in the mapfile  is
  75. case-sensitive,  including  the  header words.  The sections
  76. are for version, period, map, globals, sides, and units,  in
  77. that  order.  Most sections vary in size, and some vary also
  78. in the detail of the information they contain.  Most include
  79. extension  flags, which are reserved for future expansion of
  80. mapfiles.
  81.  
  82. Additional notes may be included by terminating the _d_e_s_c_r_i_p_-
  83. _t_i_o_n  with  a  semicolon (with NO whitespace following).  In
  84. such a case, the following  text  lines  will  skipped  over
  85. until a period "." is seen by itself on a line.
  86.  
  87. Following the header are the names of the _n mapfiles, one to
  88. a  line.   Each will be loaded into _x_c_o_n_q before the rest of
  89. the current mapfile.  This process is recursive (at least in
  90. theory).   Any conflicts are resolved by simple overwriting.
  91. Note that this presents the possibility of catastrophic con-
  92. flicts  if  the designer is not careful to, say, match units
  93. and periods.  A file with a given name will be  loaded  only
  94. once; a second attempt will result in a warning message, and
  95. the program will continue on.
  96.  
  97. The version section is quite simple, since it is  one  line;
  98. exactly  the  version string displayed when _x_c_o_n_q starts up.
  99. This is typically only needed for saved games, but might  be
  100. convenient  while  _x_c_o_n_q versions are changing incompatibly.
  101. When this section is loaded, the version is merely  compared
  102. with the internal version number, and _x_c_o_n_q fails if they do
  103. not match.
  104.  
  105. The  period  section  is  a  program  in  a  simple  postfix
  106. language,  which  when executed fills in the period descrip-
  107. tion.
  108.  
  109. The map section includes the world dimensions  and  terrain.
  110. It  may  also  include  information  about countries at some
  111. future date.
  112.  
  113. The globals section includes any global values, such as  the
  114. current  turn,  and  also  the  win/lose  conditions  for  a
  115. scenario.
  116.  
  117. The sides section defines the sides  in  a  game.   Required
  118. info  is  little  more  than  the  name  of  the side, but a
  119. detailed section may also include the area of the  map  seen
  120. by that side, and other data.
  121.  
  122. Finally, the units sections lists a number of units  in  the
  123. game.  Again, detail can range from type, name, and position
  124. to complete details on its orders.
  125.  
  126. Each of these sections is  entirely  optional  -  _x_c_o_n_q  can
  127.  
  128.  
  129.  
  130.                      September 10, 1993
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                            - 3 -
  137.  
  138.  
  139. synthesize  its  own replacements for each.  For instance, a
  140. mapfile could specify a map and two sides, or a  period,  or
  141. an  entire game, by including the appropriate sections.  The
  142. sections do interact somewhat, with dependencies as follows:
  143.  
  144.      Maps, win/lose conditions in globals,  detailed  sides,
  145.      and units depend on period.
  146.  
  147.      Detailed and/or non-neutral units depend on sides.
  148.  
  149. The following sections discuss each part  of  a  mapfile  in
  150. more  detail.   The  version secton has already been covered
  151. sufficiently.  Since the period defines what may  appear  in
  152. all the other sections, I shall begin with it.
  153.  
  154. _P_E_R_I_O_D_S
  155.  
  156. Historical periods are the most complicated way to customize
  157. xconq,  and  can  be difficult to get right.  There are many
  158. hundreds of numbers, each of which must be in  balance  with
  159. every  other.   At  best,  a mistake will result in a period
  160. whose winning strategies are quite simple;  at worst,  _x_c_o_n_q
  161. will  hang  or  core dump.  (_x_c_o_n_q will make some efforts to
  162. check the numbers.) Although  most  historical  periods  are
  163. defined  in  the  period sections of mapfiles, one period is
  164. compiled into _x_c_o_n_q (usually a version of WW II, since it is
  165. most  familiar).  Compiling other periods (using the utility
  166. _p_e_r_2_c) is straightforward, and there is no problem with mak-
  167. ing  unusual  default  periods for the program, but in prac-
  168. tice, periods do not take very long to read.
  169.  
  170. The header of the period section has the form
  171.  
  172.      PPPPeeeerrrriiiioooodddd _e_x_t_e_n_s_i_o_n
  173.  
  174. where _e_x_t_e_n_s_i_o_n is the currently-unused extension flag.
  175.  
  176. The remainder of the description is in  a  postfix  language
  177. similar to Forth or Postscript(tm), but even simpler.  _x_c_o_n_q
  178. includes an interpreter for this language, and program  exe-
  179. cution  results in a filled-in period description.  There is
  180. a compiler, called _p_e_r_2_c; it is used to produce a C  version
  181. of the period definition which is then compiled into _x_c_o_n_q.
  182.  
  183. The objects of this language are quite  simple.   There  are
  184. only  integers,  strings, and vectors of integers.  Integers
  185. and strings have direct representation as tokens, as do sym-
  186. bols, while integer vectors must be constructed using square
  187. brackets or one of the  predefined  vector-returning  words.
  188. Tokens  are always separated by whitespace, which means whi-
  189. tespace may _n_e_v_e_r be part of a token (backslash may be  used
  190. for this purpose at some future date).  Thus, the syntax for
  191. a token is fairly simple:
  192.  
  193.  
  194.  
  195.  
  196.                      September 10, 1993
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                            - 4 -
  203.  
  204.  
  205.      token -> [+-]*[0-9][0-9]*[%]* | "[~"]*" | [~"+-0-9].*
  206.  
  207. In other words, numbers are digits  optionally  preceded  by
  208. +/-  and  followed by %, while strings are anything enclosed
  209. in double quotes, and symbols are anything else that is  not
  210. white  space.   A  semicolon  is  the comment character; the
  211. characters from the semicolon to the end  of  the  line  are
  212. discarded.   Numbers  are  limited  to the typical range for
  213. signed shorts; -32768 to 32767.  The percent sign % is  just
  214. for  readability  (since  many numbers are percentages), and
  215. its presence or omission has no effect on anything.
  216.  
  217. Numbers and strings merely get pushed on  the  stack,  while
  218. symbols  are  assumed to be defined words.  The reader looks
  219. them up in the dictionary  and  executes  the  associated  C
  220. function,  if  one  is  defined  (otherwise, the symbol gets
  221. pushed).  Nearly all words take a fixed number of  arguments
  222. from  the  stack  and  push nothing, although there are some
  223. exceptions.  The program is terminated by the word eeeennnndddd.
  224.  
  225. Integer vectors are useful for filling  in  large  parts  of
  226. arrays.   They are individual objects, built using the words
  227. [[[[ and ]]]].
  228.  
  229. Usage of these depends on the word, but typically words with
  230. two  or  more  arguments may include two vectors among them.
  231. For instance, the line
  232.  
  233.       [[[[ 1111 1111 2222 8888 ]]]]  [[[[ iiii aaaa bbbb BBBB ]]]]  hhhhpppp
  234.  
  235. sets the hit points for four types of units; 1111 for unit type
  236. iiii, 8888 for unit type BBBB, and so forth.
  237.  
  238. The words below generally follow some extremely regular pat-
  239. terns.  Most one-argument words define things for the entire
  240. period.  Most two-argument words define attributes of  units
  241. or  resources,  and  may be thought of one-dimensional array
  242. operations, while three-argument words usually fill in  two-
  243. dimensional  arrays.  In the two-argument and three-argument
  244. cases, the first argument (deepest  in  the  stack)  is  the
  245. value,  while  second  and  third arguments are indices.  At
  246. present, there are no words with four or more arguments.
  247.  
  248. One-dimensional operations allow three  cases  of  the  four
  249. possibilities  for  vectors  and  scalars:  scalar value and
  250. index(set), scalar value/vector index (fill),  vector  value
  251. and  index  (mapping).  Two-dimensional operations offer six
  252. of the eight possible combinations (encoded here with S  for
  253. scalar  and  V  for vector, in the order value,index,index),
  254. disallowing only a vector value with either  two  scalar  or
  255. two  vector  indices (VSS and VVV), since these combinations
  256. are not very meaningful.  The six other combinations are SSS
  257. (element set), SVS and SSV (row fill), SVV (array fill), VVS
  258. and VSV (row mapping).  All of these combinations are useful
  259.  
  260.  
  261.  
  262.                      September 10, 1993
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                            - 5 -
  269.  
  270.  
  271. - see existing periods for examples of their use.
  272.  
  273. The following descriptions cover all the predefined words of
  274. the period language.  Most words correspond to period attri-
  275. butes, and thus have an associated default value;  when  not
  276. explicitly  mentioned,  the  default is 0000.  For arguments of
  277. type _b_o_o_l, both 1111 and 0000 or ttttrrrruuuueeee  and  ffffaaaallllsssseeee  are  valid  (an
  278. argument  characterized  as _b_o_o_l may still be a vector of 1s
  279. and 0s).  Arguments of type _n, _n%, and _n._0_1%  are  all  just
  280. integers.
  281.  
  282. First, there are some useful words not  specific  to  period
  283. definition.
  284.  
  285. ttttrrrruuuueeee
  286.  
  287. ffffaaaallllsssseeeePushes a 1111 and a 0000 on the stack, respectively.
  288.  
  289. [[[[    Marks the beginning of a vector.  The following objects
  290.      must all evaluate to numbers only.
  291.  
  292. ]]]]    Marks the end of a vector.  All numbers going  back  to
  293.      the  last  [[[[  are  popped  and collected into a vector,
  294.      which is pushed back on the stack.
  295.  
  296. _v_a_l_u_e _n_a_m_e ddddeeeeffffiiiinnnneeeeDefine the string _n_a_m_e to be  a  word  that
  297.      pushes  the object _v_a_l_u_e onto the stack.  This is espe-
  298.      cially useful  for  assigning  names  to  vectors,  for
  299.      instance a vector of all cities or all ships.
  300.  
  301. pppprrrriiiinnnnttttPrint the current contents of the stack  onto  standard
  302.      output,  surrounded  by  /* */.  Very useful for debug-
  303.      ging!
  304.  
  305. The global period definition words.
  306.  
  307. _s_t_r_i_n_g ppppeeeerrrriiiioooodddd----nnnnaaaammmmeeeeDefines the name of the period  that  will
  308.      be displayed on startup.  Defaults to """"uuuunnnnssssppppeeeecccciiiiffffiiiieeeedddd"""".
  309.  
  310. _s_t_r_i_n_g ffffoooonnnntttt----nnnnaaaammmmeeeeDefines the name of the font  that  will  be
  311.      used.   This  is  not  needed if bitmaps are being used
  312.      instead.  Defaults to the name of the text  font.   See
  313.      below for a discussion of bitmaps and fonts.
  314.  
  315. _n ssssccccaaaalllleeeeSet the default scale of maps used with this  period,
  316.      in  km.   Defaults to 111100000000.  (This value is unimportant,
  317.      used only to compare with the map scale).
  318.  
  319. The words to define new kinds of units, resources, and  ter-
  320. rain  all  add new words that push the number of their unit,
  321. resource, or terrain type onto the stack.  The numbering  is
  322. in  order;  the first of each type will be numbered 0000.  Most
  323. of the period definition words use these values  as  indices
  324. when filling up arrays of numbers.
  325.  
  326.  
  327.  
  328.                      September 10, 1993
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                            - 6 -
  335.  
  336.  
  337. _c_h_a_r _n_a_m_e _s_t_r_i_n_g uuuuttttyyyyppppeeeeDefine a type of unit.  The  arguments
  338.      are unit character (a string of length one), full name,
  339.      and a one-line help string.  The unit may thereafter be
  340.      referred to by either its character (as a one-char sym-
  341.      bol) or by its name.  Things will not work if  a  blank
  342.      or any other special characters (such as plus and minus
  343.      signs) are used as a unit  character.   Mixing  terrain
  344.      characters  and  unit  characters  is  also a bad idea,
  345.      since both may be used  by  a  graphical  display.   At
  346.      present, up to 30 or so unit types may be defined.
  347.  
  348. _c_h_a_r _n_a_m_e _h_e_l_p rrrrttttyyyyppppeeeeDefine a type of resource, by both  name
  349.      and  character,  and  supply a help string for it.  The
  350.      characters must be distinct from unit characters,  oth-
  351.      erwise this word is identical to uuuuttttyyyyppppeeee.
  352.  
  353. _c_h_a_r _n_a_m_e _c_o_l_o_r ttttttttyyyyppppeeeeDefine a type of terrain.   Unlike  the
  354.      other  two  definers,  the  terrain  character does _n_o_t
  355.      become a new word, although the name still  does.   The
  356.      character  should  be  defined  in the basic _x_c_o_n_q font
  357.      (the one named xxxxccccoooonnnnqqqq....oooonnnnxxxx, in the X10 interface), if the
  358.      period  is  to  be used with an interface that needs it
  359.      (monochrome X only, at this writing).  The color may be
  360.      either  approximate ("brown") or exact ("#334455"), but
  361.      in any case, the interpretation is up to the interface.
  362.  
  363. uuuu****   Push a vector of all unit types in order.
  364.  
  365. rrrr****   Push a vector of all resource types in order.
  366.  
  367. tttt****   Push a vector of all terrain types in order.
  368.  
  369. nnnnooootttthhhhiiiinnnnggggPush the index of a non-unit onto  the  stack.   This
  370.      word cannot be used for unit attributes, but it is use-
  371.      ful for certain attributes whose values are unit  types
  372.      (ffffiiiirrrrsssstttt----uuuunnnniiiitttt,  ffffiiiirrrrsssstttt----pppprrrroooodddduuuucccctttt).   Use of this as an index
  373.      with any word that sets unit attributes  is  guaranteed
  374.      to cause nasty coredumps...
  375.  
  376. _s_t_r_i_n_g _u_n_i_t iiiiccccoooonnnn----nnnnaaaammmmeeeeSet the name of the icon for the  given
  377.      unit  type.   If  undefined,  then the unit's character
  378.      will be used in whichever font is being used  for  unit
  379.      icons  (which may even be the text font - works but not
  380.      too attractive).  Definition of an icon  overrides  any
  381.      character  in any font.  As with the terrain, the exact
  382.      interpretation of this  word  is  up  to  the  graphics
  383.      interface  - for instance, the curses interface ignores
  384.      both the ffffoooonnnntttt----nnnnaaaammmmeeee and iiiiccccoooonnnn----nnnnaaaammmmeeee words entirely.  In X,
  385.      the name is the name of a file in the usual bitmap for-
  386.      mat, as produced by the  _b_i_t_m_a_p  program.   The  actual
  387.      file name is produced by appending """"....bbbb"""" for X10 bitmaps
  388.      and """"....bbbb11111111"""" for X11 bitmaps.   The  X11  interface  will
  389.      also look for X10 bitmap files.
  390.  
  391.  
  392.  
  393.  
  394.                      September 10, 1993
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                            - 7 -
  401.  
  402.  
  403. _t_e_r_r_a_i_n ddddeeeeffffaaaauuuulllltttt----tttteeeerrrrrrrraaaaiiiinnnnSet the type of terrain to be substi-
  404.      tuted while reading a map with incomprehensible terrain
  405.      characters.  Occasionally useful, if the set of terrain
  406.      types is a subset of the standard set.
  407.  
  408. Initialization characteristics of a  period  are  used  only
  409. during  synthesis  of  maps, sides, and units, which happens
  410. when they are not supplied from a mapfile.  Periods that are
  411. used  only with complete scenarios need not use any of these
  412. words.
  413.  
  414. _n% _t_e_r_r_a_i_n mmmmiiiinnnn----aaaallllttttSet  the  minimum  percentile  of  terrain
  415.      elevations  that  result  in  the  given  terrain type.
  416.      Together with the other three words  following,  it  is
  417.      possible  to  subdivide  all the possible altitudes and
  418.      moisture levels into different kinds of  terrain.   For
  419.      instance, desert in the standard period ranges from sea
  420.      level (77770000 ddddeeeesssseeeerrrrtttt mmmmiiiinnnn----aaaalllltttt) to high elevations (99993333 ddddeeeesssseeeerrrrtttt
  421.      mmmmaaaaxxxx----aaaalllltttt) but only in the lowest percentiles of moisture
  422.      (0000 ddddeeeesssseeeerrrrtttt mmmmiiiinnnn----wwwweeeetttt, 22220000 ddddeeeesssseeeerrrrtttt mmmmaaaaxxxx----wwwweeeetttt).  It is important
  423.      that  all percentiles be assigned to some terrain type,
  424.      or the map generator will complain; when designing ter-
  425.      rain  combinations,  it is helpful to make a graph with
  426.      altitude percentiles 0-100 on  one  axis  and  moisture
  427.      percentiles on the other.
  428.  
  429. _n% _t_e_r_r_a_i_n mmmmaaaaxxxx----aaaallllttttAs for mmmmiiiinnnn----aaaalllltttt, but set the maximum  alti-
  430.      tude percentile.  Defaults to 111100000000.
  431.  
  432. _n% _t_e_r_r_a_i_n mmmmiiiinnnn----wwwweeeetttt
  433.  
  434. _n% _t_e_r_r_a_i_n mmmmaaaaxxxx----wwwweeeettttSet the minimum and maximum percentiles of
  435.      world  moisture levels that result in the given terrain
  436.      type.  Deserts should range in the low percentiles  (0-
  437.      20),  while  rain forests should be high (90-100).  The
  438.      minimum defaults to 0000, while the maximum is 111100000000.
  439.  
  440. _n% aaaalllltttt----rrrroooouuuugggghhhhnnnneeeessssssssSet a rather mysterious number that controls
  441.      whether  a  random map tends toward large continents or
  442.      archipelagos of small islands.  It must range between 0000
  443.      and  111100000000.  Altitude roughness of 0000 will result in a map
  444.      with one large continent, while 111100000000 produces dozens  of
  445.      tiny  random  islands,  and drastic altitude variations
  446.      from one hex to the next.  Defaults to 88880000.
  447.  
  448. _n% wwwweeeetttt----rrrroooouuuugggghhhhnnnneeeessssssssSet the "moisture roughness", which is  like
  449.      altitude roughness, but affects the distribution of wet
  450.      and dry areas.  Defaults to 77770000.
  451.  
  452. _t_e_r_r_a_i_n eeeeddddggggeeee----tttteeeerrrrrrrraaaaiiiinnnnSet the type of terrain to  fill  in  on
  453.      the  northern  and southern edges of a map.  Best user-
  454.      friendliness is to have a type  that  is  scarce  else-
  455.      where,  so  the  edges are not mistaken for normal ter-
  456.      rain.
  457.  
  458.  
  459.  
  460.                      September 10, 1993
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                            - 8 -
  467.  
  468.  
  469. _d_i_s_t_a_n_c_e ccccoooouuuunnnnttttrrrryyyy----ssssiiiizzzzeeeeSet the  radius  of  a  randomly-placed
  470.      country,  in hexes.  The country is always hexagonal in
  471.      shape, and the center hex is not counted in the radius.
  472.      The  radius should be sufficient to accommodate all the
  473.      initial units, without crowding them.   For  radius  r,
  474.      the  number  of  hexes  is 3/4*(2r+1)**2.  Keep in mind
  475.      that terrain may reduce the number of  available  hexes
  476.      even  further.  If one type of unit can occupy another,
  477.      then they are free  to  be  placed  in  the  same  hex.
  478.      Defaults to 3333.
  479.  
  480. _d_i_s_t_a_n_c_e ccccoooouuuunnnnttttrrrryyyy----mmmmiiiinnnn----ddddiiiissssttttaaaannnncccceeee
  481.  
  482. _d_i_s_t_a_n_c_e ccccoooouuuunnnnttttrrrryyyy----mmmmaaaaxxxx----ddddiiiissssttttaaaannnncccceeeeSet  the  minimum  and  maximum
  483.      distances of country centers from each other, in hexes.
  484.      These values are sometimes tricky to set properly.   If
  485.      too small, countries will mostly overlap; if too large,
  486.      then attempts to use small maps will fail; if too close
  487.      to  each other, placements can also fail.  Default to 7777
  488.      and 66660000 hexes, respectively.
  489.  
  490. _u_n_i_t ffffiiiirrrrsssstttt----uuuunnnniiiittttSet the type of  unit  that  player  will  be
  491.      started off in.  Setting this to nnnnooootttthhhhiiiinnnngggg has the effect
  492.      of giving every unit in the country to  the  player  at
  493.      the  outset.  Production will not be set automatically,
  494.      so this is not recommended for  novices,  who  tend  to
  495.      find  large  numbers  of units confusing at the outset.
  496.      Defaults to nnnnooootttthhhhiiiinnnngggg.
  497.  
  498. _u_n_i_t ffffiiiirrrrsssstttt----pppprrrroooodddduuuuccccttttSet the type of unit that  will  be  built
  499.      automatically  first.   A "cheap" (quick to build) type
  500.      is usually best, although interesting situations  could
  501.      result  from,  say,  the  automatic  production  of one
  502.      atomic bomb at the outset (note that  all  sides  start
  503.      out in exactly the same way).  Defaults to nnnnooootttthhhhiiiinnnngggg.
  504.  
  505. _n _u_n_i_t iiiinnnn----ccccoooouuuunnnnttttrrrryyyySet the number of units of the  given  type
  506.      in  a player's country.  These units are randomly scat-
  507.      tered, with some bias towards the middle of  the  coun-
  508.      try, and subject to terrain limitations via the ffffaaaavvvvoooorrrreeeedddd
  509.      parameter (see below).
  510.  
  511. _n _u_n_i_t ddddeeeennnnssssiiiittttyyyySet  the  total  number  of  units   appearing
  512.      throughout the map, at the rate of one per ten thousand
  513.      hexes.  The numbers of units appearing in countries  is
  514.      subtracted first, so that the final density of units is
  515.      independent of the number of players.  If this value is
  516.      nonzero, then at least one unit will appear on the map,
  517.      even if the map is very small (i.e. the calculation  of
  518.      numbers  rounds  up  not  down).  Units not assigned to
  519.      countries to meet the quota set  by  iiiinnnn----ccccoooouuuunnnnttttrrrryyyy  always
  520.      become neutral.
  521.  
  522.  
  523.  
  524.  
  525.  
  526.                      September 10, 1993
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                            - 9 -
  533.  
  534.  
  535. _b_o_o_l _u_n_i_t nnnnaaaammmmeeeeddddSet a type of unit to get a random name  dur-
  536.      ing initialization.  The names are usually the names of
  537.      towns, so this flag should be used judiciously (A  bat-
  538.      tleship  named  "Wankers  Corner" is only briefly amus-
  539.      ing!).  The value can also be set to 2222, in  which  case
  540.      the unit name will be displayed by itself, without side
  541.      name or unit type name.
  542.  
  543. _n_a_m_e uuuunnnnaaaammmmeeeeDefine the string _n_a_m_e to be a plausible name  for
  544.      random  assignment  to an initial named unit.  The name
  545.      will be included with any previously defined, including
  546.      possibly   ones   in   the  compiled-in  period.   This
  547.      behavior, which is unlike any other period word  except
  548.      for  ssssnnnnaaaammmmeeee, is intended to ensure that each period need
  549.      not define its own list of names.
  550.  
  551. cccclllleeeeaaaarrrr----uuuunnnniiiitttt----nnnnaaaammmmeeeessssReset the  list  of  unit  names.   This  is
  552.      appropriate if the compiled-in list is completely wrong
  553.      for the period.
  554.  
  555. _n% _t_e_r_r_a_i_n _u_n_i_t ffffaaaavvvvoooorrrreeeeddddSet the probability of the unit being
  556.      on  the  given  type  of  terrain  at  the outset.  The
  557.      default of 0000 is an absolute prohibition against placing
  558.      the  unit  on  that  type of terrain, thus every period
  559.      must specify at least one non-zero value for some  ter-
  560.      rain  type and some initial unit type.  (Note that this
  561.      does not preclude a unit type with no favored  terrain,
  562.      but  it  must be able to occupy some other unit already
  563.      placed.  In fact, this is a useful  way  to  force  one
  564.      initial unit to start out inside another.)
  565.  
  566.      This parameter is tricky to use properly, and not  very
  567.      flexible.   The  problem  is a widely differing favored
  568.      terrains for initial units may be too  constraining  to
  569.      work  with  the typical random map.  For instance, very
  570.      few small countries will include both ice and open sea,
  571.      or  deserts  and  forests  and swamps.  Failure to find
  572.      such combinations will result in  games  exiting  while
  573.      still  initializing, thus frustrating erstwhile players
  574.      of the period.  Best results will be had if the favored
  575.      terrains  are  the same for all initial types of units,
  576.      and the terrain types are common on random  maps.   (At
  577.      present,  the most-favored, or the lowest-numbered type
  578.      among equally-favored terrains should be  plentiful  on
  579.      the map; this is to get around a bug.)
  580.  
  581. _n kkkknnnnoooowwwwnnnn----rrrraaaaddddiiiiuuuussssSet the area of  the  world  known  about,  in
  582.      those cases where the world is not already known.  _n is
  583.      measured in hexes, and represents a radius  which  will
  584.      be seen around each of the starting units.
  585.  
  586. _b_o_o_l _u_n_i_t aaaallllrrrreeeeaaaaddddyyyy----sssseeeeeeeennnnSet the type of unit that is or is not
  587.      seen  at  the  outset.   This should usually be true of
  588.      things like cities, independently of their  aaaallllwwwwaaaayyyyssss----sssseeeeeeeennnn
  589.  
  590.  
  591.  
  592.                      September 10, 1993
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                            - 10 -
  599.  
  600.  
  601.      setting.
  602.  
  603. _n% _r_e_s_o_u_r_c_e _u_n_i_t ssssttttoooocccckkkkppppiiiilllleeeeSet the percentage of capacity for
  604.      the  given resource that each unit will start out with.
  605.      Defaults to 111100000000.
  606.  
  607. _n_a_m_e ssssnnnnaaaammmmeeeeDeclare the string _n_a_m_e to be a plausible name for
  608.      random assignment to a side.  The name will be added to
  609.      the others already defined,  including  ones  from  the
  610.      compiled-in period.
  611.  
  612. cccclllleeeeaaaarrrr----ssssiiiiddddeeee----nnnnaaaammmmeeeessssReset the  list  of  side  names.   This  is
  613.      appropriate if the compiled-in list is completely wrong
  614.      for the period, but if used, you must supply  at  least
  615.      as  many  side  names as there are possible sides (7 or
  616.      so).
  617.  
  618. _n _t_e_r_r_a_i_n iiiinnnnhhhhaaaabbbbiiiittttaaaannnnttttssssSet the number of inhabitants  in  each
  619.      hex  of  a country with the given type of terrain.  The
  620.      number is relative, and at present is only treated as a
  621.      boolean value.
  622.  
  623. _n _t_e_r_r_a_i_n iiiinnnnddddeeeeppppeeeennnnddddeeeennnncccceeeeSet the "independence" of the  inhabi-
  624.      tants  in  the given type of terrain; how they react to
  625.      enemy units in terms in attrition, supply, etc. [NIY]
  626.  
  627. The first phase in a turn is devoted to spying.  This is the
  628. revealing  of  all  or  part  of  a side's unit positions to
  629. another randomly-selected side.  It is  controlled  by  only
  630. two parameters.
  631.  
  632. _n% ssssppppyyyy----cccchhhhaaaannnncccceeeeSet the percentage chance of  spying  occurring
  633.      on  this  turn.   If the chance is low, then the player
  634.      doing the spying will  get  a  message,  otherwise  the
  635.      display  will  be  silently  updated.  The player spied
  636.      upon is never informed.  Defaults to 1111.
  637.  
  638. _n% ssssppppyyyy----qqqquuuuaaaalllliiiittttyyyySet the percentage of enemy units that will be
  639.      seen  when  spying is successful.  Defaults to 55550000 (i.e.
  640.      on the average about half of the side's units  will  be
  641.      seen).
  642.  
  643. The second  phase  in  a  turn  determines  any  revolts  or
  644. surrenders, attrition, and disasters.  Since these are (usu-
  645. ally)  rare  events,  the  probabilities  are  set  in  one-
  646. hundredth  percent  increments.   Revolts  happen  anywhere,
  647. while surrender happens only  if  enemy  units  are  nearby.
  648. Attrition is the loss of single hit points, without actually
  649. destroying a unit, while disaster is the  complete  destruc-
  650. tion of the unit (both of these depend on terrain).
  651.  
  652. Note that with  100  units  in  play,  the  lowest  possible
  653. nonzero  chance  of  1  for  a  value  still  results  in an
  654. occurence of that sort of disaster every 100 turns or so, so
  655.  
  656.  
  657.  
  658.                      September 10, 1993
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                            - 11 -
  665.  
  666.  
  667. these parameters require a "light touch".
  668.  
  669. _n._0_1% _u_n_i_t rrrreeeevvvvoooollllttttSet the base chance for the unit to  revolt
  670.      spontaneously  in that turn.  This chance is reduced by
  671.      better morale and maybe other things.
  672.  
  673. _n._0_1% _u_n_i_t ssssuuuurrrrrrrreeeennnnddddeeeerrrrSet the base  chance  for  surrender  to
  674.      some adjacent enemy unit.  Each enemy unit present adds
  675.      to the chance by this amount.
  676.  
  677. _n._0_1% _u_n_i_t ssssiiiieeeeggggeeeeSet the additional chance for surrender when
  678.      the unit is completely surrounded by enemy units.  This
  679.      is added to the basic surrender chance.
  680.  
  681. _n._0_1% _t_e_r_r_a_i_n _u_n_i_t aaaattttttttrrrriiiittttiiiioooonnnnSet the chance of a unit  losing
  682.      a single hit point while in the given terrain.
  683.  
  684. _n _u_n_i_t aaaattttttttrrrriiiittttiiiioooonnnn----ddddaaaammmmaaaaggggeeeeNumber of hit points lost when attri-
  685.      tion  happens.   Defaults to 1111.  Note that repair is in
  686.      the following phase, and 1 hp of attrition damage might
  687.      be  repaired  immediately,  and appear not to have hap-
  688.      pened.
  689.  
  690. _s_t_r_i_n_g _u_n_i_t aaaattttttttrrrriiiittttiiiioooonnnn----mmmmeeeessssssssaaaaggggeeeeSet what to say  when  unit  is
  691.      hit by attrition.  Defaults to """"ssssuuuuffffffffeeeerrrrssss aaaattttttttrrrriiiittttiiiioooonnnn"""".  If
  692.      the string is """""""", then the message will  be  suppressed
  693.      entirely.
  694.  
  695. _n._0_1% _t_e_r_r_a_i_n _u_n_i_t ddddiiiissssaaaasssstttteeeerrrrSet the chance of completely los-
  696.      ing  the  unit  while  in the given terrain.  Accidents
  697.      should be restricted to definite hazardous  situations,
  698.      to  go  along with movement constraints - for instance,
  699.      carriers in shallow water should move more  slowly  and
  700.      have  a nonzero accident rate.  See random movement for
  701.      another way to achieve similar effects.
  702.  
  703. _s_t_r_i_n_g _u_n_i_t ddddiiiissssaaaasssstttteeeerrrr----mmmmeeeessssssssaaaaggggeeeeSet what to  say  when  unit  is
  704.      lost  in  a disaster.  Defaults to """"hhhhaaaassss mmmmeeeetttt wwwwiiiitttthhhh ddddiiiissssaaaassss----
  705.      tttteeeerrrr"""".
  706.  
  707. The next phase of a turn handles creation of new  units  and
  708. repair  of damaged units.  Units can only be created by cer-
  709. tain other kinds of units, limited  both  by  time  and  raw
  710. materials.  Also there are startup and research times.
  711.  
  712. _n _u_n_i_t_2 _u_n_i_t mmmmaaaakkkkeeeeSet the time in turns needed for a unit  of
  713.      type  _u_n_i_t  to  build  one unit of type _u_n_i_t_2, assuming
  714.      sufficient resources to do so.
  715.  
  716. _b_o_o_l _u_n_i_t mmmmaaaakkkkeeeerrrrSet the unit type to be  a  "maker".   Makers
  717.      always  build  unless  explicitly  idled,  and may move
  718.      while building.  If a period  starts  with  no  movers,
  719.      then  it  needs  at least one maker in the country, who
  720.      will prompt for a unit type at the beginning of a game.
  721.  
  722.  
  723.  
  724.                      September 10, 1993
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                            - 12 -
  731.  
  732.  
  733. _n% _u_n_i_t ssssttttaaaarrrrttttuuuuppppSet the extra time needed to build the  first
  734.      unit, if the maker was producing something else before.
  735.      Startup time should be higher for  high-tech  or  large
  736.      units,  for instance to represent tooling or production
  737.      pipeline startup.
  738.  
  739. _n% _u_n_i_t rrrreeeesssseeeeaaaarrrrcccchhhhSet the extra time  needed  for  a  side  to
  740.      build  the  very first unit of that type.  This time is
  741.      in addition to the startup time  for  the  first  unit.
  742.      Long  research  time  is a good way to keep a unit type
  743.      out of play for awhile.
  744.  
  745. _n _r_e_s_o_u_r_c_e _u_n_i_t ttttoooo----mmmmaaaakkkkeeeeSet the total amount  of  a  resource
  746.      type  needed to build a unit.  This amount is amortized
  747.      over the normal construction schedule, which means that
  748.      extra  resources  are  consumed  by startup or research
  749.      times (representing mistakes and experiments).
  750.  
  751. _n _u_n_i_t_2 _u_n_i_t rrrreeeeppppaaaaiiiirrrrSet the time needed  for  the  unit  type
  752.      _u_n_i_t  to  repair  one  hit point of damage to unit type
  753.      _u_n_i_t_2.  One of the two units must be able to occupy the
  754.      other;  It  is  also  legitimate  for  a unit to repair
  755.      itself.  Resources used to build units are also used at
  756.      the same rate to accomplish repairs.
  757.  
  758. The supply phase of a turn handles both  the  production  of
  759. resources and their distribution via supply lines.  Resource
  760. production involves a three-dimensional array indexing  unit
  761. type,  resource type, and terrain type, but supply lines are
  762. measured only by length and resource type.  Supply lines are
  763. always interrupted by enemy presence.
  764.  
  765. _n _r_e_s_o_u_r_c_e _u_n_i_t pppprrrroooodddduuuucccceeeeSet the basic amount of each resource
  766.      produced by each unit in one turn.
  767.  
  768. _n _t_e_r_r_a_i_n _u_n_i_t pppprrrroooodddduuuuccccttttiiiivvvviiiittttyyyySet the  percentage  productivity
  769.      of  a  unit  on  a type of terrain.  This is multiplied
  770.      with the basic production rate to  get  actual  produc-
  771.      tion,  so productivity of 0000 completely disables produc-
  772.      tion on that terrain type, and productivity of  111100000000  is
  773.      yields the maximum rate specified by pppprrrroooodddduuuucccceeee.
  774.  
  775. _n _r_e_s_o_u_r_c_e _u_n_i_t ssssttttoooorrrraaaaggggeeeeSet the unit's capacity to carry each
  776.      sort  of  resource.   Amount  carried  does  not affect
  777.      unit's performance.  When the value is 0000, displays  for
  778.      that  type  of unit will not mention this resource type
  779.      at all.
  780.  
  781. _n _r_e_s_o_u_r_c_e _u_n_i_t ccccoooonnnnssssuuuummmmeeeeSet the amount of resources  consumed
  782.      by  the  unit  in a turn, even if it doesn't move or do
  783.      anything else.  This includes riding  as  a  passenger.
  784.      This  only  comes  into  play if the unit has used less
  785.      than its  base  consumption  while  moving.   In  other
  786.      words,  the total supply usage for one unit in one turn
  787.  
  788.  
  789.  
  790.                      September 10, 1993
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                            - 13 -
  797.  
  798.  
  799.      is max(#moves * to-move, consume).  If  the  unit  runs
  800.      out  of a resource that it must consume, it dies due to
  801.      starvation.
  802.  
  803. _n _r_e_s_o_u_r_c_e _u_n_i_t iiiinnnn----lllleeeennnnggggtttthhhh
  804.  
  805. _n _r_e_s_o_u_r_c_e _u_n_i_t oooouuuutttt----lllleeeennnnggggtttthhhhThese two  are  used  together  to
  806.      determine the length (in hexes) of supply lines between
  807.      units.   The  given  type  of  resource  can  only   be
  808.      transferred from unit type A to unit type B if the dis-
  809.      tance is less than the minimum of the  in-length  of  B
  810.      and  the  out-length of A.  For instance, the in-length
  811.      for a fighter's fuel might be 3 hexes, while  the  out-
  812.      length  of  fuel  from  a  city  is  4  hexes.   If the
  813.      fighter's out-length is 0, then it will  be  constantly
  814.      supplied  with  fuel when within 3 hexes of a city, but
  815.      will never transfer any fuel  to  the  city  unless  it
  816.      actually  lands there.  An in- or out-length of 0000 means
  817.      that the two units must be in the  same  hex,  while  a
  818.      negative  length  disables  the automatic transfer com-
  819.      pletely.  Long out-length lines should  be  used  spar-
  820.      ingly,  since  the  algorithm  uses  the  out-length to
  821.      define the radius of search for units to be resupplied.
  822.      Supply lines are not affected by terrain at present.
  823.  
  824. _n% _u_n_i_t ssssuuuurrrrvvvviiiivvvvaaaallllChance that a unit type can  survive  on  no
  825.      supplies.  The test is made once per turn.
  826.  
  827. _s_t_r_i_n_g _u_n_i_t ssssttttaaaarrrrvvvveeee----mmmmeeeessssssssaaaaggggeeeeSet what to say when unit  has  no
  828.      more  of some supply to consume.  Defaults to """"rrrruuuunnnnssss oooouuuutttt
  829.      ooooffff ssssuuuupppppppplllliiiieeeessss aaaannnndddd ddddiiiieeeessss"""".
  830.  
  831. The movement phase is the main part of a turn in _x_c_o_n_q,  and
  832. the  only part involving interaction with players.  All com-
  833. bat happens during the movement phase.
  834.  
  835. _n _u_n_i_t ssssppppeeeeeeeeddddSet the maximum theoretical speed of a unit,  in
  836.      hexes/turn.   If  the  unit  cannot move on any sort of
  837.      terrain, it will never be prompted about -  thus  every
  838.      period should define at least one type of moving unit.
  839.  
  840. _n _t_e_r_r_a_i_n _u_n_i_t mmmmoooovvvveeeessssSet extra moves used up on each type  of
  841.      terrain.  0000 indicates no decrease from theoretical max,
  842.      2222 indicates a move into that type of terrain uses up  3
  843.      moves  instead  of 1, and ----1111 indicates that movement on
  844.      that type of terrain is not possible.  Defaults to ----1111.
  845.  
  846. _n._0_1% _t_e_r_r_a_i_n _u_n_i_t rrrraaaannnnddddoooommmm----mmmmoooovvvveeeeSet the randomness of movement
  847.      of  a  unit  on  the  terrain.   This is different from
  848.      disaster and attrition, since it is not  always  fatal,
  849.      and  happens  only  during  attempts to move.  However,
  850.      collisions with other units or with impassable terrain,
  851.      due to random moves, are always fatal.
  852.  
  853.  
  854.  
  855.  
  856.                      September 10, 1993
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                            - 14 -
  863.  
  864.  
  865. _b_o_o_l _u_n_i_t ffffrrrreeeeeeee----mmmmoooovvvveeeeSet whether the unit  can  move  even  if
  866.      there  is  insufficient movement allowance remaining in
  867.      this turn.  Defaults to  ttttrrrruuuueeee.   (Most  board  wargames
  868.      make  this  false  -  if you don't have enough movement
  869.      points to meet the entry requirement for a hex,  that's
  870.      too  bad.)  Can  be  useful  to  make  "double movement
  871.      phases", if attack time is equal to movement allowance;
  872.      a  unit can only attack units that it is adjacent to at
  873.      the start of the movement phase.
  874.  
  875. _b_o_o_l _u_n_i_t oooonnnneeee----mmmmoooovvvveeeeSet whether the unit can make exactly  one
  876.      move  before  dying  (appropriate for rockets and other
  877.      automatic equipment). [NIY]
  878.  
  879. _b_o_o_l _u_n_i_t jjjjuuuummmmpppp----mmmmoooovvvveeeeSet whether a unit can jump over  another
  880.      unit to get somewhere. [NIY]
  881.  
  882. _n _r_e_s_o_u_r_c_e _u_n_i_t ttttoooo----mmmmoooovvvveeeeSet the amount of resource used by  a
  883.      unit  to move one hex.  The amount taken is independent
  884.      of the terrain in the hex.  If the unit is out  of  any
  885.      movement  resource,  it  is  immobilized  until it gets
  886.      more.
  887.  
  888. Transportation-related  parameters.   Capacity  is  measured
  889. both  by  number  and volume of occupants.  For instance, if
  890. you wanted a transport to carry  up  to  8  infantry  and/or
  891. armor,  but  no  more  than 4 armor units, then capacity for
  892. infantry should be 8 and capacity for armor 4,  the  volumes
  893. for each should be 1, while the transport hold-volume should
  894. be 8.
  895.  
  896. _n _u_n_i_t_2 _u_n_i_t ccccaaaappppaaaacccciiiittttyyyySet the basic carrying capability of  a
  897.      transport type _u_n_i_t for its occupants of type _u_n_i_t_2.
  898.  
  899. _n _u_n_i_t hhhhoooolllldddd----vvvvoooolllluuuummmmeeeeSet the volume capacity  of  a  transport.
  900.      Volume measure is quite arbitrary, and is used only for
  901.      comparison.  The default value of  0000  implies  infinite
  902.      capacity, volume-wise.
  903.  
  904. _n _u_n_i_t vvvvoooolllluuuummmmeeeeSet the volume of a unit.  The volume of a unit
  905.      may  be smaller than its hold-volume, the code will not
  906.      care about this.
  907.  
  908. _n _u_n_i_t_2 _u_n_i_t eeeennnntttteeeerrrr----ttttiiiimmmmeeeeNumber of moves  needed  to  enter  a
  909.      transport.   This is a time measure; extra supplies are
  910.      not used up.
  911.  
  912. _n _u_n_i_t_2 _u_n_i_t lllleeeeaaaavvvveeee----ttttiiiimmmmeeeeNumber of moves  needed  to  leave  a
  913.      transport; similar to eeeennnntttteeeerrrr----ttttiiiimmmmeeee.
  914.  
  915. _n% _u_n_i_t_2 _u_n_i_t aaaalllltttteeeerrrr----mmmmoooobbbbiiiilllliiiittttyyyySet the effect of an occupant on
  916.      the  transport's  speed  as  a ratio of the transport's
  917.      usual speed.  Defaults to 111100000000;  smaller values slow the
  918.      transport,  and 0000 prevents it from moving entirely.  To
  919.  
  920.  
  921.  
  922.                      September 10, 1993
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                            - 15 -
  929.  
  930.  
  931.      simplify the code, only the  effect  of  one  (randomly
  932.      chosen)  type  of occupant has this effect.  If a tran-
  933.      sport has two types of occupants each  of  which  alter
  934.      its  speed  differently,  the resulting transport speed
  935.      will be unpredictable.  The total  slowdown  is  multi-
  936.      plied by the number of occupants of all types.
  937.  
  938. Seeing is an important part of _x_c_o_n_q, and  needs  parameters
  939. to  accommodate submarines, radar installations, and Indians
  940. hiding in the woods.  The  visibility  of  a  unit  and  the
  941. intensity  of  viewing are computed separately, and compared
  942. to get the final decision on seeing something.  This doesn't
  943. allow for much differential between two types of units view-
  944. ing a third, but that's life.  For units seeing things at  a
  945. distance,  the  chances  are interpolated linearly, from the
  946. best conditions (adjacent hex) to worst (maximum range).
  947.  
  948. _b_o_o_l aaaallllllll----sssseeeeeeeennnnIf true, then all sides see all of each other's
  949.      units.   If secrecy unneeded (as in a board game), this
  950.      will speed up the display process somewhat.
  951.  
  952. _n% _u_n_i_t sssseeeeeeee----bbbbeeeessssttttSet the basic chance of one unit seeing  any
  953.      other,  under  best  possible  conditions.  Defaults to
  954.      111100000000.
  955.  
  956. _n _u_n_i_t sssseeeeeeee----rrrraaaannnnggggeeeeSet the maximum distance in hexes  at  which
  957.      the  unit  can  see  anything.  Defaults to 1111 (adjacent
  958.      hexes only).
  959.  
  960. _n% _u_n_i_t sssseeeeeeee----wwwwoooorrrrssssttttSet the chance of seeing a unit at the max-
  961.      imum range.  Defaults to 111100000000.
  962.  
  963. _n _u_n_i_t vvvviiiissssiiiibbbbiiiilllliiiittttyyyySet the basic chance of a unit to be  seen.
  964.      Crippled  unit  is  more  visible,  in proportion to hp
  965.      loss.  Defaults to 111100000000.
  966.  
  967. _n% _t_e_r_r_a_i_n _u_n_i_t ccccoooonnnncccceeeeaaaallllSet the percent effect of terrain  on
  968.      seeing  the  unit.   This  is subtracted from the basic
  969.      chance, since it is a "concealment factor".
  970.  
  971. _b_o_o_l _u_n_i_t aaaallllwwwwaaaayyyyssss----sssseeeeeeeennnnDeclare the unit to be of a  type  that
  972.      is  always  seen  and up-to-date.  This applies only to
  973.      units whose underlying hexes have been seen.   This  is
  974.      useful  for  units  like  towns,  which are unlikely to
  975.      disappear secretly.
  976.  
  977. Combat is part of movement, and has its  own  large  set  of
  978. parameters.   The  basic plan of combat is for attackers and
  979. defenders to hit each other, then attackers  to  attempt  to
  980. capture.   Success  of  a hit attempt depends on a number of
  981. attributes, including chances, terrain, and the availability
  982. of the correct sort of ammo.
  983.  
  984.  
  985.  
  986.  
  987.  
  988.                      September 10, 1993
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                            - 16 -
  995.  
  996.  
  997. _b_o_o_l _u_n_i_t mmmmuuuullllttttiiii----ppppaaaarrrrttttSet a unit to be treated as an aggregate
  998.      of  smaller  identical  units.  Affects various things.
  999.      [NIY]
  1000.  
  1001. _n _u_n_i_t hhhhppppSet the maximum number of hit points for each  part
  1002.      of a unit.  Defaults to 1111, may never be set any lower.
  1003.  
  1004. _n _u_n_i_t ccccrrrriiiipppppppplllleeeeddddSet the hit point level below which the  unit
  1005.      is considered to be crippled.  Below this level, repair
  1006.      and construction ceases, supply production is  reduced,
  1007.      maximum  speed  starts  to  decrease,  and the bridging
  1008.      capability is disabled.
  1009.  
  1010. _n% _u_n_i_t_2 _u_n_i_t hhhhiiiittttBase chance of a single attack by the  type
  1011.      _u_n_i_t hitting the defender _u_n_i_t_2, assuming the resources
  1012.      are available.  If chance to hit is 0000, attacker  cannot
  1013.      attack or defend itself.
  1014.  
  1015. _n% _t_e_r_r_a_i_n _u_n_i_t ddddeeeeffffeeeennnnsssseeeeSet the decreased chance  of  hitting
  1016.      if  the  defending  type  _u_n_i_t is in that terrain type.
  1017.      Percentage is subtracted from base chance.
  1018.  
  1019. _n% nnnneeeeuuuuttttrrrraaaalllliiiittttyyyySet the change in defense  for  neutral  units.
  1020.      This is subtracted from chances to hit and capture, but
  1021.      the _n% can be negative, which would make it  harder  to
  1022.      hit/capture.
  1023.  
  1024. _n _u_n_i_t_2 _u_n_i_t ddddaaaammmmaaaaggggeeeeNumber of hit points  that  the  defender
  1025.      _u_n_i_t_2 loses when hit by its attacker _u_n_i_t.
  1026.  
  1027. _n nnnnuuuukkkkeeee----hhhhiiiittttMinimum damage for a hit to qualify as  a  nuclear
  1028.      blast and be displayed appropriately.  Default value is
  1029.      55550000.
  1030.  
  1031. _b_o_o_l _u_n_i_t sssseeeellllffff----ddddeeeessssttttrrrruuuuccccttttDeclare that unit self-destructs when
  1032.      it  attacks.   This  eliminates some weird messages and
  1033.      hit chances.
  1034.  
  1035. _b_o_o_l ccccoooouuuunnnntttteeeerrrraaaattttttttaaaacccckkkkWhen true, combat is two-way; the  initia-
  1036.      tor  of an attack is also hit by a counterattack.  Oth-
  1037.      erwise, the defender must  wait  to  get  its  revenge.
  1038.      Defaults to ttttrrrruuuueeee.
  1039.  
  1040. _b_o_o_l _u_n_i_t ccccaaaannnn----ccccoooouuuunnnntttteeeerrrrLike ccccoooouuuunnnntttteeeerrrraaaattttttttaaaacccckkkk, but applies only to
  1041.      particular  unit  types  being  attacked.   Defaults to
  1042.      ttttrrrruuuueeee.
  1043.  
  1044. _n% _u_n_i_t_2 _u_n_i_t ccccaaaappppttttuuuurrrreeeeSet the base chance of  the  type  _u_n_i_t
  1045.      capturing the defender type _u_n_i_t_2.  This is conditional
  1046.      on both attacker and defender surviving  initial  hits,
  1047.      and is modified by morale and quality of both sides.
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.                      September 10, 1993
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                            - 17 -
  1061.  
  1062.  
  1063. _b_o_o_l _u_n_i_t_2 _u_n_i_t bbbbrrrriiiiddddggggeeeeTrue if the unit  type  _u_n_i_t_2  can  be
  1064.      captured  by  another unit _u_n_i_t, even across impassable
  1065.      terrain.
  1066.  
  1067. _n% _u_n_i_t cccchhhhaaaannnnggggeeeessss----ssssiiiiddddeeeeSet chance  that  the  given  unit  will
  1068.      change  sides  if  captured.   This  is appropriate for
  1069.      units that are primarily hardware or  otherwise  indif-
  1070.      ferent  to  their fate.  Units that are captured and do
  1071.      not change sides become prisoners  (prisoners  are  not
  1072.      implemented yet).
  1073.  
  1074. _n _u_n_i_t_2 _u_n_i_t gggguuuuaaaarrrrddddSet the number of unit hit points required
  1075.      to  garrison or guard a captured type _u_n_i_t_2, whether or
  1076.      not the captured unit has changed sides (at present, it
  1077.      always does).  The hit point loss is permanent.
  1078.  
  1079. _n% _u_n_i_t rrrreeeettttrrrreeeeaaaattttSet the base chance that a unit will  retreat
  1080.      rather  than be hit.  This choice depends on ability to
  1081.      move into an adjacent hex and on morale,  quality,  and
  1082.      fatigue.
  1083.  
  1084. _n _r_e_s_o_u_r_c_e _u_n_i_t hhhhiiiittttssss----wwwwiiiitttthhhhSet the amounts  of  each  resource
  1085.      used as ammo by the unit.
  1086.  
  1087. _n _r_e_s_o_u_r_c_e _u_n_i_t hhhhiiiitttt----bbbbyyyySet  the  amounts  of  each   resource
  1088.      necessary  to  score a hit on the unit.  This is corre-
  1089.      lated with the previous parameter to  decide  if  right
  1090.      sort of ammo is available for an attack.
  1091.  
  1092. _n _u_n_i_t_2 _u_n_i_t pppprrrrooootttteeeeccccttttSet the level of  protection  that  _u_n_i_t
  1093.      offers to _u_n_i_t_2.  Transports protect their occupants by
  1094.      only letting a percentage of hits get  through.   Occu-
  1095.      pants  protect  their transports by reducing the chance
  1096.      of a hit and  increasing  chance  of  a  counterattack.
  1097.      (The  default  of  0000 implies terrible carnage if a full
  1098.      transport is hit.)
  1099.  
  1100. _n _u_n_i_t ccccoooommmmbbbbaaaatttt----ttttiiiimmmmeeeeSet the extra number of moves used  by  an
  1101.      attack.
  1102.  
  1103. _s_t_r_i_n_g _u_n_i_t ddddeeeessssttttrrrrooooyyyy----mmmmeeeessssssssaaaaggggeeeeSet what to say when  a  unit  is
  1104.      killed  in  combat, as an active verb for what the des-
  1105.      troying unit has done to its victim.  Defaults to """"ddddeeeessss----
  1106.      ttttrrrrooooyyyyssss"""".
  1107.  
  1108. General characteristics are not really classifiable anywhere
  1109. else.
  1110.  
  1111. _n _u_n_i_t tttteeeerrrrrrrriiiittttoooorrrryyyySet the territorial value of a  unit.   Pri-
  1112.      marily used by machine players and win/lose conditions.
  1113.  
  1114. _n _u_n_i_t mmmmaaaaxxxx----qqqquuuuaaaalllliiiittttyyyySet the maximum quality  achievable  by  a
  1115.      unit.
  1116.  
  1117.  
  1118.  
  1119.  
  1120.                      September 10, 1993
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                            - 18 -
  1127.  
  1128.  
  1129. _n% _u_n_i_t vvvveeeetttteeeerrrraaaannnnSet the effect of one point of quality on hit
  1130.      and capture chances.
  1131.  
  1132. _n _u_n_i_t mmmmaaaaxxxx----mmmmoooorrrraaaalllleeeeSet the maximum morale to which a unit  can
  1133.      rise.
  1134.  
  1135. _n% _u_n_i_t ccccoooonnnnttttrrrroooollllSet the chance of a unit obeying its  orders.
  1136.      Defaults  to  111100000000.  When the unit does not obey orders,
  1137.      it makes a decision using the  machine  players'  algo-
  1138.      rithm.
  1139.  
  1140. _b_o_o_l _u_n_i_t ccccaaaannnn----ddddiiiissssbbbbaaaannnnddddSet whether a 'D' disband  command  can
  1141.      be  used to get rid of a unit.  It should not be possi-
  1142.      ble to disband a city, for instance, to eliminate it as
  1143.      a  strategic target.  Note that the default of 0000 effec-
  1144.      tively disables the disbanding command entirely.
  1145.  
  1146. _n% eeeeffffffffiiiicccciiiieeeennnnccccyyyyUnits disbanded in a  transport  can  have  the
  1147.      resources used to build them reclaimed - this parameter
  1148.      sets the percentage that is actually obtained.
  1149.  
  1150. _b_o_o_l _u_n_i_t nnnneeeeuuuuttttrrrraaaallllSet to ttttrrrruuuueeee if unit can exist as a neutral.
  1151.      If  ffffaaaallllsssseeee,  then  anything that would cause the unit to
  1152.      become neutral (revolt, surrender  of  owner)  has  the
  1153.      effect of removing it instead.  Defaults to ffffaaaallllsssseeee.
  1154.  
  1155. Miscellaneous words.
  1156.  
  1157. _n hhhhoooossssttttiiiilllliiiittttyyyySet the level of hostility exhibited by a popula-
  1158.      tion toward a unit from some other side. [NIY]
  1159.  
  1160. bbbbeeeeggggiiiinnnn{{{{nnnnooootttteeeessss}}}}Declare the beginning of the  designer's  notes.
  1161.      This  word  kicks  in a special reader that absorbs all
  1162.      lines until it sees the line "eeeennnndddd{{{{nnnnooootttteeeessss}}}}".  The  inter-
  1163.      vening  lines  are saved as period notes and listed out
  1164.      in """"ppppaaaarrrrmmmmssss....xxxxccccoooonnnnqqqq"""".  The  notes  should  rationalize  the
  1165.      design  and discuss features of special interest to the
  1166.      player.
  1167.  
  1168. eeeennnndddd  Marks the end of the period description.
  1169.  
  1170. Nearly all the elementary programming  errors  are  checked,
  1171. such  as  stack  over/underflow,  and  as many of the period
  1172. parameters as possible will be checked,  although  there  is
  1173. plenty of room for subtle loopholes.  You should think care-
  1174. fully about the consequences of each parameter,  being  par-
  1175. ticularly  sensitive to degenerate winning strategies.  Most
  1176. common are units that are too powerful, or that are built so
  1177. quickly  that  they  overwhelm  any opposition.  The players
  1178. should always be a little "hungry"; not able to get quite as
  1179. much of units or resources as they would really like.
  1180.  
  1181. Although there are many interesting  possibilities  inherent
  1182. in this period description language, you should avoid making
  1183.  
  1184.  
  1185.  
  1186.                      September 10, 1993
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                            - 19 -
  1193.  
  1194.  
  1195. the period too complex to be humanly playable.  The compiled
  1196. form of the period description can involve over 16,000 indi-
  1197. vidually settable numbers, each with an  expected  range  of
  1198. perhaps  100  distinct  values.   It  is clearly possible to
  1199. spend many years exploring a single set  of  these  numbers.
  1200. For  more playable and enjoyable games, either pick a single
  1201. aspect to treat in detail, or else do all aspects in a  sim-
  1202. plified  way.  Aspects could include exploration, logistics,
  1203. naval  operations,  "shoot-em-up",  renditions  of  familiar
  1204. board  games  or even some team sports (rugby for instance).
  1205. Another thing to keep in mind is that the introduction of  a
  1206. new  type  may  have  far-reaching consequences - a new unit
  1207. type will need its interactions with _a_l_l  other  unit  types
  1208. defined.   One  approach  is  to  introduce  a new type as a
  1209. slight modification of an existing type, then to share  most
  1210. of the definitions.
  1211.  
  1212. Something else to keep in mind is that the period parameters
  1213. have been chosen for their ability to combine in interesting
  1214. ways, rather than for obvious usefulness.  For example, past
  1215. startup,  the  production  rate  for  units  is constant and
  1216. unending.  But suppose you  want  to  put  a  limit  on  the
  1217. numbers  of  that  type  of  unit?   One  way is to define a
  1218. resource that is essential for construction  of  that  type,
  1219. let  the  builder have an initial supply, but provide no way
  1220. to get more of that resource.  When it  runs  out,  no  more
  1221. units!   Another  trick is to motivate an activity by making
  1222. it a prerequisite to the basic builtin goal of defeating the
  1223. other  player.   The  age of discovery worked this way.  The
  1224. kings of that time weren't interested in new lands  per  se;
  1225. they  wanted  exploitable  possessions that could be used to
  1226. get gold to buy armies big enough to defeat their neighbors.
  1227. The  period  language  could  describe this situation almost
  1228. exactly, by making gold a resource obtainable  only  by  the
  1229. capture  of neutral mines thinly scattered over the map.  Be
  1230. inventive!  Studying the predefined periods should reveal  a
  1231. number of tricks.
  1232.  
  1233. Completely new periods usually have a number of  bugs.   The
  1234. tools  are  rather  limited,  but  then most of the bugs are
  1235. fairly obvious.  The pppprrrriiiinnnntttt word is useful for examining  the
  1236. stack,   and   a   number   of   errors   (such   as   stack
  1237. overflow/underflow) have messages.  Finding  out  where  the
  1238. problem  occurred  requires  the  use of the _x_c_o_n_q debugging
  1239. flag ----DDDD, which has the effect of  listing  out  each  period
  1240. token  as it is read.  This can also be used with the period
  1241. compiler, which starts up faster; invoke  it  as  """"ppppeeeerrrr2222cccc  ----DDDD
  1242. <<<<nnnneeeewwwwppppeeeerrrriiiioooodddd....ppppeeeerrrr"""".  The most serious problems with periods are
  1243. play balance issues.  Some can be found out  by  watching  a
  1244. machine  player,  since its decisions are based on perceived
  1245. values of the units.  The  most  subtle  bugs  can  only  be
  1246. uncovered  by  extensive  play  interspersed  with judicious
  1247. alteration of parameters.  I find it useful to  play  for  a
  1248. while, then go over all the period parameters, thus avoiding
  1249.  
  1250.  
  1251.  
  1252.                      September 10, 1993
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                            - 20 -
  1259.  
  1260.  
  1261. tweaking one parameter only  to  find  that  it  results  in
  1262. another  being  inconsistent.   Parameters  interact in many
  1263. ways - you should keep this in mind when experimenting.
  1264.  
  1265. _M_A_P_S
  1266.  
  1267. Maps alone are the easiest  thing  to  customize.   You  can
  1268. either  do  ordinary  text  editing to acquire the map data,
  1269. then add the headers, or  use  the  online  terrain  editing
  1270. capability of _x_c_o_n_q and save the terrain alone.
  1271.  
  1272. The map header has the form
  1273.  
  1274.      MMMMaaaapppp _w_i_d_t_h _h_e_i_g_h_t _s_c_a_l_e _s_e_e_n _e_x_t_e_n_s_i_o_n
  1275.  
  1276. where _w_i_d_t_h and _h_e_i_g_h_t are the size of the  map,  while  the
  1277. _s_c_a_l_e  is  the width of a single hex in km (measured between
  1278. parallel faces).  The _s_e_e_n flag is 0000 if the map is not known
  1279. to  the  players, and 1111 if it is (this is like using """"----vvvv"""" on
  1280. the command line).  The _e_x_t_e_n_s_i_o_n is an extension flag, with
  1281. a  value of 0000 for the normal map.  Other values are reserved
  1282. for extensions.
  1283.  
  1284. The preferred way to build a map is to use the  """"----BBBB""""  option
  1285. of  _x_c_o_n_q.   This  enables  the space bar to "paint" terrain
  1286. onto the map.  The "brush" is defined by using  the  terrain
  1287. characters  as  commands (they will override any normal com-
  1288. mands on the same letters).  The argument is also  useful  -
  1289. if positive, it is the radius of the area to be painted with
  1290. the given terrain type, if negative, it is the length  of  a
  1291. horizontal  bar.  Thus, in the standard period, the sequence
  1292. """"999999999999.... """" will convert all but the largest maps into open sea.
  1293. To  save  the map by itself, answer with the string "m" when
  1294. "saving the game" (described in more detail below).
  1295.  
  1296. The other way to build is by using a text editor and follow-
  1297. ing  the  format  exactly.   The terrain data is a number of
  1298. long lines of characters.  The length of the lines  must  be
  1299. exactly  the  width  of the map.  The characters for terrain
  1300. types are defined by the period.  The coordinate  system  is
  1301. Cartesian  oblique,  with  the  y  axis tilted to form a 60-
  1302. degree angle with the x axis.  Thus, landforms in  the  map-
  1303. file should appear to be leaning to the left, if they are to
  1304. appear upright during play.
  1305.  
  1306. Maps should have some distinguishing terrain on the northern
  1307. and  southern  edges;   also,  remember that the default map
  1308. shape wraps around in the east-west direction, so  landforms
  1309. should match up.  If the wraparound is undesirable, a verti-
  1310. cal stripe of some  otherwise-unused  type  (such  as  outer
  1311. space) is useful to block movement.
  1312.  
  1313. Run-length encoding is also available.  It is flagged  by  a
  1314. numeric digit, followed by any number of digits, followed by
  1315.  
  1316.  
  1317.  
  1318.                      September 10, 1993
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.                            - 21 -
  1325.  
  1326.  
  1327. a terrain character.  The terrain character will  be  repli-
  1328. cated  the  number  of  times specified by the digit string.
  1329. The encoding may be freely intermixed with  normal  terrain,
  1330. but cannot extend over line boundaries.
  1331.  
  1332. _G_L_O_B_A_L_S
  1333.  
  1334. Globals include a number of values affecting an entire game.
  1335. The header is in the following form:
  1336.  
  1337.      GGGGlllloooobbbbaaaallllssss _g_a_m_e_t_i_m_e _e_n_d_t_i_m_e _s_e_t_p_r_o_d_u_c_t  _l_e_a_v_e_m_a_p  _n_u_m_c_o_n_d_s
  1338.      _e_x_t_e_n_s_i_o_n
  1339.  
  1340. where _g_a_m_e_t_i_m_e is the elapsed turns,  _e_n_d_t_i_m_e  is  the  last
  1341. turn of the game, _s_e_t_p_r_o_d_u_c_t controls whether unit construc-
  1342. tion is changeable, _l_e_a_v_e_m_a_p allows units to  leave  by  the
  1343. map edges, and _e_x_t_e_n_s_i_o_n is reserved for extensions (is nor-
  1344. mally 0000).
  1345.  
  1346. _n_u_m_c_o_n_d_s specifies the number of winning/losing  conditions.
  1347. Conditions are evaluated at the end of each turn (along with
  1348. other ways to lose, such as losing all of one's  units).   A
  1349. win condition results in the side achieving it winning while
  1350. all others lose.  A losing condition knocks the side out  of
  1351. the  game,  and the other sides continue normally.  Multiple
  1352. win and lose conditions act as disjunctions -  when  one  is
  1353. satisfied, something will happen.  There is a limit of about
  1354. 10 conditions or so.  All conditions include a starting  and
  1355. ending  time  for  when  they  are in effect, as well as the
  1356. number of a side to which it applies, or  ----1111  it  is  to  be
  1357. applied to all sides equally.
  1358.  
  1359. The first line of a condition is the same for all types:
  1360.  
  1361.       _w_i_n/_l_o_s_e _t_y_p_e _s_t_a_r_t _e_n_d _s_i_d_e(_s)
  1362.  
  1363. where _w_i_n/_l_o_s_e is 1111 if the condition is for  winning  and  0000
  1364. for  losing, _s_t_a_r_t and _e_n_d are the starting and ending turns
  1365. for testing the condition, _s_i_d_e(_s) is the number of  a  side
  1366. to  which  the condition applies (or ----1111 if it applies to any
  1367. side), and _t_y_p_e is the type of condition:
  1368.  
  1369. 0000    Territory; next line is one number, the amount of  ter-
  1370.      ritory (above if to win, below if to lose).
  1371.  
  1372. 1111    Number of units; next line is list of numbers, one  for
  1373.      each  unit  type.   To  win, must possess at least that
  1374.      many of each type.  To lose, must be at or  below  that
  1375.      many  for  _a_l_l  unit  types simultaneously (the default
  1376.      losing condition is this one, with all zeros).  To make
  1377.      this condition apply to only one unit type, set all the
  1378.      other numbers to very low (for win condition)  or  very
  1379.      high  (for  lose  condition)  values, outside the range
  1380.      normally occurring during a game.
  1381.  
  1382.  
  1383.  
  1384.                      September 10, 1993
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.                            - 22 -
  1391.  
  1392.  
  1393. 2222    Quantity of resources; next line is a list of  numbers,
  1394.      one for each resource type.  Winning and losing is same
  1395.      as for unit types.
  1396.  
  1397. 3333    Possession; next line is three numbers, the  first  two
  1398.      representing  the  coordinates  of a hex, and the third
  1399.      the number of a unit type (or ----1111 to indicate  all  unit
  1400.      types).  To win, must have a unit of the specified type
  1401.      on the hex.  To lose, do not have a unit on that hex.
  1402.  
  1403. Each condition has a sort of  dual  identity,  since  it  is
  1404. interpreted slightly differently, depending on whether it is
  1405. flagged for winning  or  losing.   The  logic  is  a  little
  1406. twisted  perhaps  - special conditions should have all cases
  1407. tested carefully before a scenario is released.
  1408.  
  1409. _S_I_D_E_S
  1410.  
  1411. Sides need relatively little information stored about  them,
  1412. particularly for a scenario.  The header is simple:
  1413.  
  1414.      SSSSiiiiddddeeeessss _n_u_m_s_i_d_e_s _d_e_t_a_i_l _e_x_t_e_n_s_i_o_n
  1415.  
  1416. where _n_u_m_s_i_d_e_s is the number of sides recorded,  and  _d_e_t_a_i_l
  1417. is the level of detail that was recorded.
  1418.  
  1419. The side's name can be set using the naming or CCCCall command,
  1420. when  the  cursor  is  not over a unit, or if an argument is
  1421. supplied (this will be the number of a side, and can be used
  1422. in build mode to change the names of other sides).
  1423.  
  1424. The exact contents of each level of detail are as follows:
  1425.  
  1426. 1111    Name of side only is saved.   This  is  sufficient  for
  1427.      many scenarios.
  1428.  
  1429. 2222    Name, attributes, and political status  and  production
  1430.      counts (used for numbering unnamed units) saved.
  1431.  
  1432. 3333    All of above, plus view of explored part of world.
  1433.  
  1434. 4444    All of above, plus hosts and player types, plus statis-
  1435.      tics if used.
  1436.  
  1437. 9999    All possible data.  This is the level  used  for  saved
  1438.      games.   (At the moment, this is equivalent to level 4,
  1439.      but may include more data in the future.)
  1440.  
  1441. The data for each level begins on a new line, and some  lev-
  1442. els  need  several  lines (such as the view data).  The best
  1443. way to study the layout is to examine a saved game.
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.                      September 10, 1993
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.                            - 23 -
  1457.  
  1458.  
  1459. _U_N_I_T_S
  1460.  
  1461. Units have quite a few attributes, nearly all of which  must
  1462. be saved.  The header is as simple as for sides:
  1463.  
  1464.      UUUUnnnniiiittttssss _n_u_m_u_n_i_t_s _d_e_t_a_i_l _e_x_t_e_n_s_i_o_n
  1465.  
  1466. where _n_u_m_u_n_i_t_s is the number of units saved, _d_e_t_a_i_l  is  the
  1467. level  of  detail that was recorded, and of course _e_x_t_e_n_s_i_o_n
  1468. is the usual extension with only a value of  0000.   There  are
  1469. several levels of detail:
  1470.  
  1471. 1111    Type, name, and position,  and  side.   The  re-created
  1472.      units  will be fully supplied and awake.  Neutral units
  1473.      have a side of -1.  Units capable of construction  will
  1474.      be  idled, so there should be at least one movable unit
  1475.      present.
  1476.  
  1477. 2222    All  of  above,  plus  scalar  attributes  and   supply
  1478.      amounts, all on one line.  (Look at a saved game or the
  1479.      source code to interpret the numbers.)
  1480.  
  1481. 3333    All of  above,  plus  orders  and  standing  orders  if
  1482.      defined.
  1483.  
  1484. 9999    All possible data.  This is the level  used  for  saved
  1485.      games.  (Same as level 3 at present.)
  1486.  
  1487. Build mode offers a number of way to manipulate units on any
  1488. side, as described in the next section.
  1489.  
  1490. _S_C_E_N_A_R_I_O_S
  1491.  
  1492. The ----BBBB command line option starts up _x_c_o_n_q  in  _b_u_i_l_d  _m_o_d_e,
  1493. where  many  additional  actions  are possible, all oriented
  1494. towards the editing of game state.  All commands can be per-
  1495. formed  on any side's units, and none of the machine players
  1496. will move (this can be toggled by  using  the  quit  command
  1497. 'Q',  then  saying 'n' to the confirmation question).  Build
  1498. mode allows some other acts:
  1499.  
  1500.      Move any unit anywhere instantly, using the moveto com-
  1501.      mand 'm'.
  1502.  
  1503.      Create any unit anywhere, using '\' (prompts  for  unit
  1504.      type, argument specifies side, defaults to neutral).
  1505.  
  1506.      Modify terrain anywhere, as  described  under  the  map
  1507.      section.
  1508.  
  1509.      See all units everywhere, using 'V'
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.                      September 10, 1993
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.                            - 24 -
  1523.  
  1524.  
  1525.      Do anything to any unit as if it were your  own,  using
  1526.      the usual commands.
  1527.  
  1528. Once all desired changes have been made,  you  may  wish  to
  1529. allow  machine  players  to move a little, just to randomize
  1530. things a bit.  Then use the normal game  save  command.   In
  1531. build  mode,  you will be asked to enter a string indicating
  1532. sections and levels of detail.  The string should contain  a
  1533. character  for  each  section you want written out - 'g' for
  1534. globals, 'u' for units, and so forth.  The letters  'u'  and
  1535. 's' must each be followed by a digit indicating the level of
  1536. detail desired, as described earlier.  The default string is
  1537. """"mmmmssss1111uuuu1111"""",  which  will  write  a  mapfile  with the map, side
  1538. names, and unit types/names/positions/sides, which is suffi-
  1539. cient for many interesting scenarios.  The file that will be
  1540. written is always called """"rrrraaaannnnddddoooommmm....ssssccccnnnn"""", is written  into  the
  1541. current  directory, and should be renamed as desired.  After
  1542. sufficient playtesting, it may  be  added  to  the  scenario
  1543. menu,  just by adding its name to the file """"mmmmaaaappppffffiiiilllleeeessss"""" in the
  1544. library directory.
  1545.  
  1546. Scenario construction  is  not  for  everybody.   Since  the
  1547. processes  are  semi-internal,  the error-checking is not as
  1548. extensive.  For instance, you can load a submarine with bat-
  1549. tleships  as  passengers.   There are also more subtle ques-
  1550. tions of balance, which are  usually  revealed  by  repeated
  1551. play of the scenario.  As a rule, the lower levels of detail
  1552. are safer to use - level 1 details for sides and  units  are
  1553. often simple enough to be typed in or edited by hand.
  1554.  
  1555. _E_X_A_M_P_L_E_S
  1556.  
  1557. A period description with only infantry and cities:
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.                      September 10, 1993
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.                            - 25 -
  1589.  
  1590.  
  1591.  
  1592.         Xconq 0 -+---- Very simple test period
  1593.         Period 0
  1594.  
  1595.         "generic" period-name
  1596.  
  1597.         "standard" font
  1598.  
  1599.         "i" "infantry" "moves around" utype
  1600.         "@" "city" "makes infantry units" utype
  1601.  
  1602.         "+" "land" "green" ttype  ; must always have at least one terrain type
  1603.  
  1604.         1 @ in-country
  1605.         100 land @ favored
  1606.  
  1607.         @ first-unit
  1608.         i first-product
  1609.  
  1610.         1 i @ make
  1611.         true @ maker
  1612.         1 i @ capacity  ; makers need to be able to hold or be held by products
  1613.  
  1614.         1 i speed
  1615.  
  1616.         0 t* i moves
  1617.  
  1618.         begin{notes}
  1619.         This is just a test.
  1620.         Kids, don't try this at home!
  1621.         end{notes}
  1622.  
  1623.         end
  1624.  
  1625. A tiny map with two cities,  including  an  "empire"  period
  1626. description to ensure meaningful city definitions:
  1627.  
  1628.         Xconq 1 --+--+ Tiny map;
  1629.         just an example...
  1630.         empire.per
  1631.         Map 9 5 100 1 0
  1632.         :........
  1633.         :.+++++..
  1634.         :..+^^^..
  1635.         :...+~~..
  1636.         :........
  1637.         Units 2 1 0
  1638.         @ New Cork 2,3 -1
  1639.         @ Old York 4,1 -1
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.                      September 10, 1993
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.                            - 26 -
  1655.  
  1656.  
  1657. _L_O_S_S_A_G_E_S
  1658.  
  1659. Several words are marked NIY, meaning that although they can
  1660. be used, the code does not actually take them into account.
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.                      September 10, 1993
  1715.  
  1716.  
  1717.